Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

deShared.hpp

Go to the documentation of this file.
00001 ///////////////////////////////////////////////////////////////////////////////
00002 /// @file deShared.hpp
00003 ///
00004 /// @brief deShared Lib Header
00005 ///
00006 /// @author Hootie
00007 ///
00008 /// This file is the intellectual property of Novus Delta, LLC.. Usage of the
00009 /// contents of this file is subject to the Destiny3D Member License which
00010 /// can be found at http://www.destiny3d.com.  Any other usage is prohibited.
00011 ///
00012 /// This file is distributed "AS IS" without warranty of any kind.  Novus
00013 /// Delta, LLC. does not guarantee the fitness of the contents of this file
00014 /// for any particular purpose.
00015 ///
00016 /// Copyright (C) 2001-2003 Novus Delta, LLC. All Rights Reserved.
00017 ///
00018 /// <hr>
00019 ///                                 Change History
00020 /// <hr>
00021 ///
00022 /// @date Oct 2001
00023 /// @author Hootie
00024 /// @remarks Rearchitecture II
00025 ///
00026 ///////////////////////////////////////////////////////////////////////////////
00027 
00028 #ifndef DESHARED_HPP
00029 #define DESHARED_HPP
00030 
00031 
00032 
00033 //=================================================================================
00034 // Includes
00035 //=================================================================================
00036 
00037 #include "deGlobalTypes.hpp"
00038 
00039 #ifdef USING_DESTINY3D
00040 #ifdef _DEBUG
00041 // no static link
00042 #pragma comment(lib, "deSharedd")
00043 #else
00044 #pragma comment(lib, "deShared")
00045 #endif //_DEBUG
00046 #endif //USING_DESTINY3D
00047 
00048 
00049 //=================================================================================
00050 // Classes Declared
00051 //=================================================================================
00052 
00053 class deRegistry;
00054 class deWinFile;
00055 class deConfigFile;
00056 class deDynamicArray;
00057 class deDynamicList;
00058 
00059 
00060 
00061 //=================================================================================
00062 // deRegistry Definitions
00063 //=================================================================================
00064 
00065 //=================================================================================
00066 // Registry Root Key Enums
00067 //=================================================================================
00068 
00069 typedef enum
00070 {
00071    DEREGISTRY_CLASSES_ROOT,
00072    DEREGISTRY_CURRENT_USER,
00073    DEREGISTRY_LOCAL_MACHINE,
00074    DEREGISTRY_USERS
00075 } deRegistryRootKey;
00076 
00077 
00078 
00079 //=================================================================================
00080 // deRegistry Class
00081 //
00082 // Simple Win32 Registry Class
00083 //=================================================================================
00084 typedef struct HKEY__* HKEY;
00085 
00086 class deRegistry
00087 {
00088 public:
00089    deRegistry();
00090 
00091    deBoolean SetRoot(const deRegistryRootKey RootKey);
00092    deBoolean ReadString(const char *Key, const char *ValueName, char *Buffer, int *BufferSize);
00093    deBoolean WriteString(const char *Key, const char *ValueName, const char *Buffer, const int BufferSize);
00094    deBoolean ReadInt(const char *Key, const char *ValueName, int *IntValue);
00095    deBoolean WriteInt(const char *Key, const char *ValueName, const int IntValue);
00096    LONG GetLastReturnCode() { return LastReturnCode; }
00097 
00098 private:
00099    HKEY CurrentRootKey;
00100    HKEY CurrentOpenKey;
00101    LONG LastReturnCode;
00102 };
00103 
00104 
00105 
00106 //=================================================================================
00107 // deWinFile Definitions
00108 //=================================================================================
00109 
00110 //=================================================================================
00111 // File Access Enums
00112 //=================================================================================
00113 
00114 typedef enum
00115 {
00116    DEWINFILE_READONLY,
00117    DEWINFILE_WRITEONLY,
00118    DEWINFILE_READWRITE
00119 } deWinFileAccessType;
00120 
00121 
00122 
00123 //=================================================================================
00124 // File Disposition Enums
00125 //=================================================================================
00126 
00127 typedef enum
00128 {
00129    DEWINFILE_NEW,
00130    DEWINFILE_EXISTS
00131 } deWinFileDisposition;
00132 
00133 
00134 
00135 //=================================================================================
00136 // deWinFile Class
00137 //
00138 // Simple Win32 File Class
00139 //=================================================================================
00140 
00141 class deWinFile
00142 {
00143 public:
00144    deWinFile();
00145    ~deWinFile();
00146 
00147    deBoolean Open(const char *FileName,
00148                   const deWinFileAccessType FileAccessType,
00149                   const deWinFileDisposition FileDispositionType);
00150    deBoolean Close(void);
00151    unsigned int Read(void *Buffer, unsigned int BufferSize);
00152    unsigned int Write(void *Buffer, unsigned int BufferSize);
00153    unsigned int GetSize(void);
00154 
00155 private:
00156    HANDLE CurrentOpenFile;
00157 };
00158 
00159 
00160 
00161 //=================================================================================
00162 // deConfigFile Definitions
00163 //=================================================================================
00164 
00165 //=================================================================================
00166 // deConfigFile Class
00167 //
00168 // Non-deFile Config File Class
00169 //=================================================================================
00170 
00171 class deConfigFile
00172 {
00173 public:
00174    deConfigFile(char *FullFilePath);
00175    ~deConfigFile();
00176 
00177    deBoolean GetCreationResult(void) { return CreationResult; }
00178    void SetCurrentEntry(unsigned int Entry) { CurrentEntry = Entry; } 
00179    char *FindKeyValue(const char *KeyName);
00180    char *FindNextKeyValue(const char *KeyName);
00181    deBoolean GetFirstKeyValue(char **KeyName, char **KeyValue);
00182    deBoolean GetNextKeyValue(char **KeyName, char **KeyValue);
00183    deBoolean GetPreviousKeyValue(char **KeyName, char **KeyValue);
00184 
00185 private:
00186    unsigned int LoadFileBuffer(char *FullFilePath);
00187    deBoolean ParseFileBuffer(void);
00188 
00189 
00190    deBoolean CreationResult;
00191    void *FileBuffer;
00192    deDynamicArray *ConfigKeys;
00193    deDynamicArray *ConfigValues;
00194    int TotalConfigEntries;
00195    int CurrentEntry;
00196 };
00197 
00198 
00199 
00200 //=================================================================================
00201 // deArray Definitions
00202 //=================================================================================
00203 
00204 //=================================================================================
00205 // deArray Class
00206 //
00207 // Simple Dynamic Array Class
00208 //=================================================================================
00209 
00210 class deDynamicArray
00211 {
00212 public:
00213    deDynamicArray(const unsigned int Size, const unsigned int Count);
00214    deDynamicArray(deDynamicArray &deDynamicArraySource);
00215    ~deDynamicArray();
00216 
00217    deBoolean GetCreationResult(void) { return CreationResult; }
00218    void SetArrayGrowthRate(unsigned int GrowthRate) { ArrayGrowthRate = GrowthRate; }
00219    unsigned int GetElementSize(void) { return ElementSize; }
00220    unsigned int GetElementCount(void) { return ElementCount; }
00221    void *GetElement(unsigned int Index);
00222    deBoolean SetElement(void *Element, unsigned int Index);
00223 
00224 private:
00225    deBoolean GrowArray(unsigned int SizeIncrease);
00226 
00227    deBoolean CreationResult;
00228    unsigned int ElementSize;
00229    unsigned int ElementCount;
00230    void  *Array;
00231    unsigned int ArrayGrowthRate;
00232 };
00233 
00234 
00235 
00236 //=================================================================================
00237 // deDynamicList Definitions
00238 //=================================================================================
00239 
00240 //=================================================================================
00241 // deDynamicList Clear Type
00242 //=================================================================================
00243 
00244 typedef enum
00245 {
00246    DEDYNAMICLIST_NOCLEAR,
00247    DEDYNAMICLIST_CLEAR
00248 } deDynamicListClearType;
00249 
00250 
00251 
00252 //=================================================================================
00253 // deDynamicList Class
00254 //
00255 // Dynamic Linked List Class
00256 //=================================================================================
00257 
00258 class deDynamicList
00259 {
00260 public:
00261    deDynamicList(const unsigned int Size,
00262                  const unsigned int Count,
00263                  const unsigned int Growth,
00264                  const deDynamicListClearType ClearType);
00265    deDynamicList(deDynamicList &deDynamicListSource);
00266    ~deDynamicList();
00267 
00268    deBoolean GetCreationResult(void) { return CreationResult; }
00269    deBoolean AddElement(void *Element);
00270    deBoolean InsertElementBefore(void *Element);
00271    deBoolean InsertElementAfter(void *Element);
00272    deBoolean DeleteElement(void);
00273    void *GetFirstElement(void);
00274    void *GetNextElement(void);
00275    void *GetPreviousElement(void);
00276    void *GetLastElement(void);
00277 
00278 private:
00279    void *FindOpenSlot(void);
00280    deBoolean GrowList(unsigned int SizeIncrease);
00281 
00282    deBoolean CreationResult;
00283    void *List;
00284    void *FirstElement;
00285    void *LastElement;
00286    void *CurrentElement;
00287    unsigned int ElementSize;
00288    unsigned int ListEntrySize;
00289    unsigned int GrowthRate;
00290    unsigned int ListSize;
00291    unsigned int CurrentElementCount;
00292    unsigned int ElementOffset;
00293    unsigned int PrevOffset;
00294    unsigned int NextOffset;
00295    deDynamicListClearType ListClearType;
00296 };
00297 
00298 
00299 
00300 
00301 #endif  //End DESHARED_HPP
00302 

Generated on Mon Sep 12 19:58:39 2005 for Destiny3D by doxygen1.3-rc3